<?php defined('SYSPATH') OR die('No direct access allowed.');

class Gera_codigo_Controller extends Controller {

	public function __construct(){
		parent::__construct();
		//new Profiler;
	}

	function index(){
		//url::redirect('lexico/formulario');
	}

	public function geracao(){
		$relacional = $this->input->post("relacional");
		$lexico = new Lexico($relacional);
		$tokens = $lexico->listTokens();
		$sintatico = new Sintatico();
		$sintatico->analizaEntrada($tokens);
		$saida = $sintatico->getSaida();
		$arvoreSintatica = new ArvoreSintatica($sintatico);
		$arvoreYahoo = $arvoreSintatica->getArvoreYahoo();
		$errosDeAnalize = $sintatico->getError();
		$geradorDeCodigo = new GeraCodigo($sintatico);
		$codigoGerado = $geradorDeCodigo->getCodigo();
		
		$this->create_view('geracodigo_result');
		$this->view->codigoGerado = $codigoGerado;
		$this->view->saida = $saida;
		$this->view->producoes = $sintatico->getRegras();
		$this->view->relacional = $relacional;
		$this->view->arvoreYahoo = $arvoreYahoo;
		$this->view->emsg = '';
		$this->view->msg = '';
		if(count($errosDeAnalize)>0){
			$msg = '';
			foreach ($errosDeAnalize as $error) {
				$msg .= $error."<br>\n";
			}
			$this->view->emsg = $msg;
		}else{
			$this->view->msg = 'Analize completada com sucesso';
		}
		$link = html::anchor('', 'proximo');
		$this->view->titulo = "Compilador de Algebra Relacional para SQL";
		$this->view->conteudo = "Este compilador tem por objetivo, fazer a leitura de codigos de algebra relacional e fazer a tradução para a linguagem SQL.<br>$link";
		$this->view->render(TRUE);
	}

} // end Controller